import java.util.Scanner;

/**
 * 一维数组应用
 * 1、最值
 * 2、查找
 * 3、排序
 * 4、数组对象属性：lenght
 *    数组对象方法：clone()
 *    调用时打"."
 *    b=a.clone(),表示创建了新的数组
 */
public class Array3 {
    /**
     * 从数组中找最小值
     *
     * @param a 要查找的数组
     * @return 找到的最小值
     */
    static int findMin(int[] a) {
        int min = 0;
        for (int i = 1; i < a.length; i++) {
            if (a[i] < a[min]) min = i;
        }
        return min;
    }

    static int findMax(int[] a) {
        int max = a[0];
        for (int i = 1; i < a.length; i++) {
            if (a[i] > max) max = a[i];
        }
        return max;
    }

    //查找值
    static int indexOf(int[] a, int s) {
        for (int i = 0; i < a.length; i++) {
            if (a[i] == s) return i;
        }
        return -1;
    }
    //用void定义时，不需要返回值，对数组排序时只是交换了地址，没有产生新的数组，无需返回值
    static void sort(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            int min = i;//假设未排序序列第一个是最小的
            for (int j = i + 1; j < a.length; j++) {//与i后面的数比较大小，找出最小的元素
                if (a[j] < a[min])
                    min = j;
            }
            int t;
            t = a[i];
            a[i] = a[min];
            a[min] = t;//把最小元素与未排序序列第一个交换
        }
    }
    static void sort2(int[] a){
        for (int i = 0; i < a.length - 1; i++) {
            for (int j = i + 1; j < a.length; j++) //与i后面的数比较大小，找出最小的元素
                if (a[i] > a[j])
                {
                    int t;
                    t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
        }
    }
    static void sort3(int[] a){
        for (int i=1;i<a.length;i++) {
            int j, t = a[i];//t存储待插入元素
            for (j= i - 1; j >= 0 && t < a[j]; j--) {
                a[j + 1] = a[j];
            }
            a[j + 1] = t;
        }
    }
    //冒泡排序
    static void sort4(int[] a) {
        for (int i = 0; i < a.length - 1 ; i++) {
            for (int j = 0; j < a.length - i - 1; j++) {
                if (a[j] > a[j + 1]) {
                    int t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                }
            }
        }
    }

    //（String[] args）或者(String args[])是给主方法传一个字符串组，agrs是字符串组的变量名，一般照写
    public static void main(String[] args) {
        int[] a = {4, 3, 7, 2, 9, 1, 6};//数组初始化
        out(a);
        /*int pos = findMin(a);
        System.out.println("最小值为" + a[pos] + "下标为" + pos);
        System.out.println("最大值为" + findMax(a));
        System.out.println("请输入要查找的值：");
        Scanner in = new Scanner(System.in);
        int s = in.nextInt();
        int p = indexOf(a, s);
        if (p >= 0)
            System.out.println("该值下标是" + p);
        else
            System.out.println("您输入的值不存在！");*/
        //sort(a);
       // out(a);
        //sort2(a);
        //out(a);
        //sort3(a);
        //out(a);
        sort4(a);
        out(a);

    }

    static void out(int[] a) {
        for (int e : a) {
            System.out.print(e + " ");
        }
        System.out.println();
    }
}
